<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./lib/vue.min.js"></script>
</head>
<body>
    <div id="app">
        <input type="button" value="修改msg" @click = "msg = 'no'">
        <h3 id="h3"> {{ msg }}</h3>
    </div>
    
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                msg: 'ok'
            },
            methods: {
                show() {
                    console.log('执行了show方法')
                }
            },
            beforeCreate() { //这是第一个生命周期函数，表示实例完全被创建出来之前会执行
               //注意：在beforeCreate 生命周期函数中执行的时候，data和methods的数据都还没有初始化
                //console.log(this.msg)
                //this.show()
            },
            created() { //这是第二个生命周期函数
                //在created中，data和methods都已经被初始化好了
                //所以，要操做methods中的方法和data中的数据，最早只能在created生命函数中操作
               //console.log(this.msg)
                //this.show()
            },
            beforeMount() { //这是遇到的第三个生命周期函数，表示模板已经在内存中编译完成了，并未把模板渲染到页面中
                //在beforeMount 执行的时候，页面中的元素还没有被真正替换过来，只有之前写的模板字符串
                //console.log(document.getElementById('h3').innerText)
            },
            mounted() { //这是第四个生命周期函数
                //表示内存中的模板已经真实挂载到了页面中，用户可看到渲染好的页面
                //注意: mounted是实例创建周期间的最后一个生命周期函数，当执行完mounted就表示实例完全创建好了，
                //当没有其他的操作，则躺在我们内存中，一动不动
                //console.log(document.getElementById('h3').innerText)
            },

            //接下来是运行的两个事件
            beforeUpdate() { //这时候，表示 我们的界面还没有被更新，【数据被更新了吗? 数据肯定被更新了才会执行这个函数】
               //得出结论：当执行beforeUpdate的时候， 页面中显示的数据还是旧的，data中的数据是最新的，页面尚未和最新数据保持同步
                // console.log('界面上的内容是:' + document.getElementById('h3').innerText)
                // console.log("data中的数据是:" + this.msg)
            },
            updated() {
                //updated中 页面和data中的数据都保持同步了，都是最新的数据
                console.log('界面上的内容是:' + document.getElementById('h3').innerText)
                console.log("data中的数据是:" + this.msg)
            }
        })
    </script>
</body>
</html>